import axios from "axios"
import {reactive, ref} from "vue"
import { ElLoading } from 'element-plus'
import store from "@/store"



const baseurl=()=>{
  if (process.env.NODE_ENV === 'production') {
    /*第二层if，根据.env文件中的VUE_APP_FLAG判断是生产环境还是测试环境*/
    if (process.env.VUE_APP_FLAG === 'production') {
        //production 生产环境
        // return 'https://192.168.157.129/';
        return 'http://192.168.157.129/';
 
    } else {
        //test 测试环境
        return 'http://localhost:8080/';
 
    }
} else {
    //serve 开发环境
    return 'http://localhost:8080/';
}
}
// 创建请求实例
const request = axios.create({
  timeout:8000,
  baseURL:baseurl(),
  
  headers:{
    "Content-type":"application/json;charset:utf-8"
  }
  
})
const loadInstance=ref()

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

request.interceptors.request.use(function (config) {

  // const method=config.method
  // console.log(method);
  
  // if (method=="post"){
  //   // console.log(config.data.token);
    
  //   if(config.data.token==null){
  //     // cancelToken: source.token
  //     let errorMsg ={ message: 'cancelCache' + Math.random(), data: [] }
  //     config.cancelToken = source.token
  //     source.token.reason = errorMsg // 这一行的作用是每次传递的errorMsg都是不一样的，如果没有这一行，那么，即使source.cancel(errorMsg)中有传递不同的参数，接收的时候也是一样的
	// 		//  cancel函数可以不用传参，也可以传入取消后执行的操作，取消后可提示用户需要登录
  //     source.cancel()
  //   }
    
  // }
  
  return config
  // console.log("adad",d);
  
  // 在发送请求之前做些什么

    
  
  
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});

// 暴露实例
export default request
